package com.softtown.modules.sys.service;

import com.github.pagehelper.PageInfo;
import com.softtown.common.service.BaseService;
import com.softtown.common.utils.Result;
import com.softtown.modules.sys.dto.CompRoleUserAddDTO;
import com.softtown.modules.sys.dto.CompSysRoleUserAllocatePageDTO;
import com.softtown.modules.sys.dto.CompSysRoleUserDeleteDTO;
import com.softtown.modules.sys.entity.CompSysRoleUserEntity;
import com.softtown.modules.sys.vo.RoleUserInfosVO;

import java.util.List;

/**
 * 公司角色用户
 *
 * @author Dingyayong
 */
public interface CompSysRoleUserService extends BaseService<CompSysRoleUserEntity> {

    /**
     * 根据角色id 找出相应数据
     *
     * @param roleId
     * @return CompSysRoleUserEntity
     * @author Dingyayong
     * @date 2019/6/17 10:15
     */
    List<CompSysRoleUserEntity> getByRoleId(Long roleId);

    /**
     * 根据公司id，用户id 找出相应数据
     *
     * @param compId
     * @param userId
     * @return java.util.List<java.lang.Long>
     * @Author fuming
     * @Date 2020/5/27 11:21
     */
    List<Long> getRoleIdList(Long compId, Long userId);

    /**
     * 根据公司id，用户id roleId 找出相应数据
     *
     * @param compId
     * @param roleId
     * @param userId
     * @return com.softtown.modules.sys.entity.CompSysRoleUserEntity
     * @Author fuming
     * @Date 2020/5/27 11:21
     */
    CompSysRoleUserEntity getRoleUserEntity(Long compId, Long roleId, Long userId);

    /**
     * 更新
     *
     * @param compSysRoleUserEntity CompSysRoleUserEntity
     * @author Dingyayong
     * @date 2019/6/17 10:15
     */
    void updateRoleUserInfo(CompSysRoleUserEntity compSysRoleUserEntity);

    /**
     * 根据公司角色查询用户
     *
     * @param compSysRoleUserAllocatePageDTO
     * @return
     * @author Dingyayong
     * @date 2019-06-22 20:53
     */
    PageInfo<RoleUserInfosVO> getCompUsersByRole(CompSysRoleUserAllocatePageDTO compSysRoleUserAllocatePageDTO);

    /**
     * 检查用户是否存在于该角色
     *
     * @param compRoleUserAddDTO
     * @return Result
     * @author Dingyayong
     * @date 2019-06-23 23:49
     */
    Result checkRoleUserExist(CompRoleUserAddDTO compRoleUserAddDTO);

    /**
     * 添加用户
     *
     * @param compRoleUserAddDTO
     * @return void
     * @author Dingyayong
     * @date 2019-06-24 00:16
     */
    void insertRoleUser(CompRoleUserAddDTO compRoleUserAddDTO);

    /**
     * 删除用户
     *
     * @param compSysRoleUserDeleteDTO
     * @return void
     * @author Dingyayong
     * @date 2019-06-24 01:23
     */
    Result deleteCompRoleUser(CompSysRoleUserDeleteDTO compSysRoleUserDeleteDTO);

    /**
     * 删除用户
     *
     * @param compId
     * @param userId
     * @return Long
     * @author Dingyayong
     * @date 2019-06-24 01:23
     */
    List<Long> getRoleId(Long compId, Long userId);
}
